Aula 2

Semabio

Carolina Musso

IB/UnB

Sobre o curso

  • Estrutura:

    • Aula 1: Instalação e Intro Rmarkdown
    • Aula 2 (hoje): Rmarkdown, Erros comuns, pacote dplyr
    • Aula 3: Gráficos ggplot, Tabelas resumo e testes estatísticos
    • Aula 4: Pendências e Relatório automatizado final

Nossa bibliografia

Revisando …

Os Quatro Paineis do R-Studio

Rmarkdown

  • Algo especial do R

  • Bem diferente de como foi criado nos anos 90

  • Rmarkdown

  • Quarto

  • YiHui

R de trás-pra-frente

  • Fizemos o download de um código pronto.

  • Analisamos, rodasmos, sem “entender”!

Você conseguiu diferenciar essas partes?

  • Cabeçalho

  • Texto

  • Código

Cabeçalho

  • Metadados

  • Linguagem YAML

  • É MUITO sensível (qualquer coisa atrapalha)

Texto

  • Markdown

Código

  • É o coração do R mesmo

    • Linguagem de programação

    • Como que difere de Excel (apontar e clicar?)

Brincando com o código

  • Mudar de cor, posição …

  • Prática

O que são esses chunks afinal?

  • O “código” própriamente dito

  • As partes dos chunks

    • cabeçalho (do chunk)
    • conteúdo
      • código
      • comentários

Pacotes

E os pacotes o que são?

Instalar e Carregar

  • Para utilizar um pacote é preciso instalá-lo (uma única vez) e depois carregá-lo (sempre que for usar)

Jeito clássico

# para instalar
install.packages("tidyverse") # precisa estar entre aspas

# para carregar
library(tidyverse) #pode estar entre aspas ou não

Pacote Pacman

  • Mas nós vamos fazer de outro jeito!

  • Vamos usar um pacote que gerencia pacotes (eu disse que tinha pacotes para tudo!)

if (!require("pacman")) install.packages("pacman")
pacman::p_load("tidyverse")
  • Verifica a instalação e carrega! : Garantir reprodutibilidade e automatização.

  • O pacote é o pacman, a função que faz isso é o p_load.

O que são funções

  • O pacote é um conjunto de funções… mas o que são funções?

  • “Funções em programação é um conjunto de instruções para simplificar uma tarefa repetitiva”

  • precisam de argumentos.

sqrt(9)
[1] 3
round(3.89, digits = 0 )
[1] 4
round(3.89,  0 )
[1] 4

O pacote tidyverse

RBase

head(cars[cars$speed>7,],3)
  speed dist
5     8   16
6     9   10
7    10   18

Com o tidyverse

cars %>% #isso chama pipe
  filter(speed>7) %>% 
  head(3)
  speed dist
1     8   16
2     9   10
3    10   18

Erros comuns

Primeira coisa

  • Ler o erro! 😂
    • Nem sempre ajuda muito…mas sempre comece por aí!

    • Atenção que as vezes não é um Erro, e sim um “Warning”

Em seguida

  • Perguntar ao Google! (ou ao ChatGPT)
    • Simplesmente copie e cole o erro lá!

No Google

  • Dê preferêcia resultados do:

    • StackOverflow ; RBloggers ; RStudio / RProject

  • E no ChatGPT?

Documentação oficial

  • Buscar no CRAN o pdf da documentação oficial

  • Procurar na aba ajuda pela documentação da função que está tentando usar

  • Vamos lá!

Erro de codificação

  • Resumidamente…

  • Os caracteres especiais no script não são lidos corretamente

  • Como resolver?

    • File -> Reopen with encoding

Objetos antigos na memória

Como eu sempre começo meu código?

rm(list=ls())  #limpa  o ambiente
  • Isso vai garantir que você sempre vai começar com o “Ambiente Limpo”

E o contrário?

O que deveria estar na memória não estava

  • Esqueci de rodar alguma coisa

  • Lembre-se, para o computador, você tem que falar tudo em uma ordem muito específica.

  • Afinal o que são os objetos no R?

Interlúdio:

  • Vamos achar um objeto no nosso código …

  • Pacotes, funções, objetos, argumentos

  • Google Forms

Intervalo

Parte 2: Pacote dplyr

Leituras para aprofundamento

Pacote do tidyverse

  • Vamos dar preferência para funções desse pacote

    • do pacote dplyr que faz parte do tidyverse

select()

  • Trabalhando com as colunas

  • As vezes queremos selecionar apenas algumas colunas (pode ser pesado e confuso manter todas as colunas sempre)

  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Função select()

  • Vimos que as funções são intruções: muitas vezes tem cara de verbo

  • a função select precisa de 2 argumentos: a base de dados e as colunas que você quer selecionar

# dplyr

select(iris, Sepal.Length, Sepal.Width) %>% 
  head(5)
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
# dplyr
select(iris, starts_with("Sepal")) %>% 
  head(5)
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
# R base

iris[,c("Sepal.Length", "Sepal.Width")][1:6,]
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9

Função filter()

  • Trabalhando com as linhas

  • As vezes queremos selecionar apenas algumas linhas: algum grupo específico.

  • Raciocínio parecido com a função select(): precisa de 2 argumentos: a base de dados e a condição sobre alguma coluna para fazer o filtro.

# dplyr
iris %>% # outra forma de fazer 
  filter(Species == "setosa") %>% 
  select(starts_with("Petal"), Species) %>% 
  head(5)
  Petal.Length Petal.Width Species
1          1.4         0.2  setosa
2          1.4         0.2  setosa
3          1.3         0.2  setosa
4          1.5         0.2  setosa
5          1.4         0.2  setosa
#R base
iris[iris$Species=="setosa", ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1           5.1         3.5          1.4         0.2  setosa
2           4.9         3.0          1.4         0.2  setosa
3           4.7         3.2          1.3         0.2  setosa
4           4.6         3.1          1.5         0.2  setosa
5           5.0         3.6          1.4         0.2  setosa
6           5.4         3.9          1.7         0.4  setosa
7           4.6         3.4          1.4         0.3  setosa
8           5.0         3.4          1.5         0.2  setosa
9           4.4         2.9          1.4         0.2  setosa
10          4.9         3.1          1.5         0.1  setosa
11          5.4         3.7          1.5         0.2  setosa
12          4.8         3.4          1.6         0.2  setosa
13          4.8         3.0          1.4         0.1  setosa
14          4.3         3.0          1.1         0.1  setosa
15          5.8         4.0          1.2         0.2  setosa
16          5.7         4.4          1.5         0.4  setosa
17          5.4         3.9          1.3         0.4  setosa
18          5.1         3.5          1.4         0.3  setosa
19          5.7         3.8          1.7         0.3  setosa
20          5.1         3.8          1.5         0.3  setosa
21          5.4         3.4          1.7         0.2  setosa
22          5.1         3.7          1.5         0.4  setosa
23          4.6         3.6          1.0         0.2  setosa
24          5.1         3.3          1.7         0.5  setosa
25          4.8         3.4          1.9         0.2  setosa
26          5.0         3.0          1.6         0.2  setosa
27          5.0         3.4          1.6         0.4  setosa
28          5.2         3.5          1.5         0.2  setosa
29          5.2         3.4          1.4         0.2  setosa
30          4.7         3.2          1.6         0.2  setosa
31          4.8         3.1          1.6         0.2  setosa
32          5.4         3.4          1.5         0.4  setosa
33          5.2         4.1          1.5         0.1  setosa
34          5.5         4.2          1.4         0.2  setosa
35          4.9         3.1          1.5         0.2  setosa
36          5.0         3.2          1.2         0.2  setosa
37          5.5         3.5          1.3         0.2  setosa
38          4.9         3.6          1.4         0.1  setosa
39          4.4         3.0          1.3         0.2  setosa
40          5.1         3.4          1.5         0.2  setosa
41          5.0         3.5          1.3         0.3  setosa
42          4.5         2.3          1.3         0.3  setosa
43          4.4         3.2          1.3         0.2  setosa
44          5.0         3.5          1.6         0.6  setosa
45          5.1         3.8          1.9         0.4  setosa
46          4.8         3.0          1.4         0.3  setosa
47          5.1         3.8          1.6         0.2  setosa
48          4.6         3.2          1.4         0.2  setosa
49          5.3         3.7          1.5         0.2  setosa
50          5.0         3.3          1.4         0.2  setosa

mutate()

  • criar nosvas variáveis
# dplyr

iris %>% 
  mutate(area = Petal.Length*Petal.Width/2) %>% 
  select(area) %>% 
  head(5)
  area
1 0.14
2 0.14
3 0.13
4 0.15
5 0.14
# R base
iris$area <- iris$Petal.Length*iris$Petal.Width/2

group_by()

  • sempre agrupar e fazer alguma conta!
# dplyr
iris %>% 
  mutate(area = Petal.Length*Petal.Width/2) %>% 
  group_by(Species) %>% 
  summarise(media=mean(area))
# A tibble: 3 × 2
  Species    media
  <fct>      <dbl>
1 setosa     0.183
2 versicolor 2.86 
3 virginica  5.65 

Obrigada